hadoop的rpc同异步转换原理 | 您所在的位置:网站首页 › rpc 异步 › hadoop的rpc同异步转换原理 |
一、hadoop通过call的wait和notify方式实现异步消息交互和同步调用的转换。 调用者线程首先创建动代理,在实现InvocationHandler接口的invoke方法中,通过调用rpc.client.call(Invocation,RemoteServerID),在client的call方法中将Invocation作为参数创建Call对象,发送请求后,Call对象.wait()等待响应结果返回,当Server.handler线程取得结果后,会notify调用者线程,通知其结果返回。 二、同异步转换原理。 hadoop的rpc底层使用异步发送数据;上层以同步方式暴露接口。客户端发起的RPC调用是同步的,而服务端处理RPC调用是异步的。客户端调用线程以阻塞同步的方式发起RPC连接及RPC调用,将参数等信息发送给Listener,然后等待Connection接收响应返回。Listener负责接收RPC连接和RPC数据,当一个Call的数据接收完后,组装成Call,并将Call放入由Handler提供的Call队列中。Handler线程监听Call队列,如果Call队列不为空,则按FIFO方式取出Call,并转为实际调用,以非阻塞方式将响应发回给Connection,未发送完毕的响应交给Responder处理。 交互过程如下图所示: hadoop的rpc同异步转换原理,布布扣,bubuko.com hadoop的rpc同异步转换原理 原文:http://blog.csdn.net/zcc_0015/article/details/22696135 |
CopyRight 2018-2019 实验室设备网 版权所有 |